package com.yhp.dao;

import com.yhp.bean.Express;
import org.apache.commons.beanutils.PropertyUtilsBean;

import java.util.List;
import java.util.Map;

public interface BaseExpressDao {

    /**
     * 查找取件码是否重复
     * @param code   取件码
     * @return   集合
     */
    boolean lookCode(String code);

    /**
     * 用于查询数据库中的全部快递(总数+新增)，待取件快递(总数+新增)
     * @return {{size:总数,day:新增},{size:总数,day:新增}}
     */
    List<Map<String,Integer>> console();

    /**
     * 用于查询所有快递
     * @param limit   是否分页  true表示分页  false表示查询全部
     * @param offset    SQL语句的起始索引
     * @param pageNumber    页查询的数量
     * @return   快递的集合
     */
    List<Express> findAll(boolean limit,int offset,int pageNumber);


    /**
     * 根据快递单号查询快递信息
     * @param number   单号
     * @return    查询的快递信息     单号不存在时返回null
     */
    Express findByNumber(String number);


    /**
     * 根据取件码查询快递信息
     * @param  code 取件码
     * @return    查询的快递信息     取货吗不存在时返回null
     */
    Express findByCode(String code);



    /**
     * 根据手机号查询查询快递信息
     * @param  phone 手机号
     * @return    查询的快递信息
     */
    List<Express> findByPhone(String phone);

    /**
     * 根据手机号查询查询快递信息
     * @param  phone 手机号
     * @param  status 状态码
     * @return    查询的快递信息
     */
    List<Express> findByPhoneAndStatus(String phone,int status);


    /**
     * 根据录入人手机号查询查询快递信息
     * @param  sysPhone 手机号
     * @return    查询的快递信息
     */
    List<Express> findBySysPhone(String sysPhone);


    /***
     * 快递的录入
     * @param e  录入的对象
     * @return  返回  录入成功或者失败
     */
    boolean insert(Express e);


    /**
     * 快递的修改
     * @param id  要修改的快递的id
     * @param newe  新的快递对象  修改的数据
     * @return   返回成功或者失败
     */
    boolean update(int id,Express newe);

    /***
     * 更改快递的状态为1  表示取件完成
     * @param code  要更改快递的id
     * @return   就改的结果  成功或者失败
     */
    boolean updateStatus(String code);

    /***
     * 删除快递
     * @param id  要删除快递的id
     * @return  返回成功或者失败
     */
    boolean delete(int id);











}
